package presentacion;
//formulario de busqueda de articulos

import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;

import static biblioteca.FuncionesDeVentanas.*;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Vector;

import logicaDeNegocios.Busqueda;
import logicaDeNegocios.Cliente;

public class BusquedaDeCliente extends JInternalFrame {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	final  String CONTROLADOR ="com.mysql.jdbc.Driver";
	final  String URL_BASEDATOS = "jdbc:mysql://localhost/pos";
	
	Vector<Object> arregloTemporal;
	
	private JTextField textFieldCampoBuscarCliente;
	private JTable table;
	private JComboBox<String> comboBoxBuscarCliente;
	private JButton btnRealizarBusquedaCliente;
	private JButton btnAgregarCliente;
	private JButton btnRetornar;
	
	// TODO: ... Revisar esta variable private RegistrarCliente abrirBuscarCliente;
	private final String consultaGeneral = "SELECT id_cliente, nombre, direccion, email, cedula, pasaporte, fecha FROM clientes";
	private String consultaEspecifica;
	private RegistroDeCliente ventanaPadre;

	/**
	 * Create the frame.
	 */
	public BusquedaDeCliente(RegistroDeCliente padre) {
		setTitle("Buscar Cliente");
		setBounds(100, 100, 582, 378);
		getContentPane().setLayout(null);
		
		ventanaPadre = padre;
		quitarBotonesDelSistemaJInternalFrame(this);
		quitarBotonEsquinaIzquierdaJInternalFrame(this);
		
		JLabel lblBuscarPor = new JLabel("Buscar Por:");
		lblBuscarPor.setBounds(24, 32, 82, 16);
		getContentPane().add(lblBuscarPor);
		
		comboBoxBuscarCliente = new JComboBox<String>();
		comboBoxBuscarCliente.setModel(new DefaultComboBoxModel<String>(new String[] {"Codigo", "Nombre ", "Cedula"}));
		comboBoxBuscarCliente.setBounds(22, 47, 112, 26);
		getContentPane().add(comboBoxBuscarCliente);
		
		textFieldCampoBuscarCliente = new JTextField();
		textFieldCampoBuscarCliente.setBounds(146, 46, 237, 28);
		getContentPane().add(textFieldCampoBuscarCliente);
		textFieldCampoBuscarCliente.setColumns(10);
		
		btnRealizarBusquedaCliente = new JButton("Buscar");
		btnRealizarBusquedaCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{	
				String buscarPor = comboBoxBuscarCliente.getSelectedItem().toString();
				if( buscarPor.equalsIgnoreCase("Codigo") ) buscarPor = "id_cliente";
				
				consultaEspecifica = "SELECT id_cliente, nombre, direccion, email, cedula, pasaporte, fecha  "
									+ "FROM clientes WHERE " + buscarPor + " LIKE'%" + 
									textFieldCampoBuscarCliente.getText() + "%'";
				
				cargarListaClientesPor(consultaEspecifica);					
			}
		});
		btnRealizarBusquedaCliente.setBounds(407, 46, 90, 28);
		getContentPane().add(btnRealizarBusquedaCliente);
		
		table = new JTable();
		
		JScrollPane panelDeslizante = new JScrollPane(table);
		panelDeslizante.setBounds(24, 85, 526, 216);
		getContentPane().add(panelDeslizante);		
		
		btnAgregarCliente = new JButton("Agregar Cliente");
		btnAgregarCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				seleccionarRegistro();
				ventanaPadre.bloquearCampos();
				ventanaPadre.botonesEvento();
			}
		});
		btnAgregarCliente.setBounds(133, 310, 120, 28);
		getContentPane().add(btnAgregarCliente);
		
		btnRetornar = new JButton("Retornar");
		btnRetornar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
			}
		});
		btnRetornar.setBounds(304, 310, 120, 28);
		getContentPane().add(btnRetornar);
		
		cargarListaClientesPor(consultaGeneral);
	}
	
	//para realizar una busqueda selectiva
	void cargarListaClientesPor(String consulta)
	{
		DefaultTableModel modelo= new DefaultTableModel();
        String []Titulos = {"CODIGO","NOMBRE","DIRECCION","EMAIL","CEDULA","PASAPORTE","FECHA","TELEFONOS"};
        modelo.setColumnIdentifiers(Titulos);
               
        Busqueda miBusqueda = new Busqueda();        
        
        Vector<Vector<Object>> registros = miBusqueda.obtenerDatos(consulta);
        
        for (int i = 0; i < registros.size(); i++)
		{
        	modelo.addRow(registros.elementAt(i));
        	
		}
	    
        table.getTableHeader().setReorderingAllowed(false); // sirve para que no se puedan cambiar la posicion de una columna con el mouse en tiempo de ejecucion
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // agrega la barra para moverse y mostrar los datos de la tabla que no se ven inicialmente
		table.setModel(modelo);
	}
	
	//funcion para seleccionar el cliente de la tabla a mostrar...
	public void seleccionarRegistro() 
	{
		int fila;
		fila =  table.getSelectedRow();
		if (fila == -1) 
		{
			JOptionPane.showMessageDialog(null, "Favor selecionar una fila");
		}
		else
		{		
			String codigoCliente = "" + table.getValueAt(fila, 0);
			String nombreCliente = "" + table.getValueAt(fila, 1);
			String direccionCliente = "" + table.getValueAt(fila, 2);
			String emailCliente = "" + table.getValueAt(fila, 3);
			String cedulaCliente = "" + table.getValueAt(fila, 4);
			String pasaporteCliente = "" + table.getValueAt(fila, 5);
			String fechaCliente = "" + table.getValueAt(fila, 6);
			
			Cliente cliente = new Cliente(codigoCliente, nombreCliente, direccionCliente, emailCliente, cedulaCliente, pasaporteCliente, fechaCliente, null);
			ventanaPadre.cargarDatosBusqueda(cliente);
			this.dispose();
		}
	}
}